core: Should write remote refs in refs/<remote>/<branch>
authorColin Walters <walters@verbum.org>
Thu, 17 Nov 2011 15:40:01 +0000 (10:40 -0500)
committerColin Walters <walters@verbum.org>
Thu, 17 Nov 2011 15:40:01 +0000 (10:40 -0500)
Not just refs/<branch>, otherwise multiple remotes conflict.

src/libostree/ostree-repo.c
src/libostree/ostree-repo.h

index a2d217037d7f6601ce1bd4155c1ba462620e729e..516d3e0f028908e45de3305f61e4c9aafd1d84d8 100644 (file)
@@ -1342,14 +1342,32 @@ add_one_path_to_tree_and_import (OstreeRepo     *self,
 
 gboolean      
 ostree_repo_write_ref (OstreeRepo  *self,
-                       gboolean     is_local,
+                       const char  *remote,
                        const char  *name,
                        const char  *rev,
                        GError     **error)
 {
+  gboolean ret = FALSE;
   OstreeRepoPrivate *priv = GET_PRIVATE (self);
-  return write_checksum_file (is_local ? priv->local_heads_dir : priv->remote_heads_dir, 
-                              name, rev, error);
+  GFile *dir = NULL;
+
+  if (remote == NULL)
+    dir = g_object_ref (priv->local_heads_dir);
+  else
+    {
+      dir = g_file_get_child (priv->remote_heads_dir, remote);
+
+      if (!ot_util_ensure_directory (ot_gfile_get_path_cached (dir), FALSE, error))
+        goto out;
+    }
+
+  if (!write_checksum_file (dir, name, rev, error))
+    goto out;
+
+  ret = TRUE;
+ out:
+  g_clear_object (&dir);
+  return ret;
 }
 
 static gboolean
@@ -1389,7 +1407,7 @@ commit_parsed_tree (OstreeRepo *self,
                                commit, &ret_commit, error))
     goto out;
 
-  if (!ostree_repo_write_ref (self, TRUE, branch, g_checksum_get_string (ret_commit), error))
+  if (!ostree_repo_write_ref (self, NULL, branch, g_checksum_get_string (ret_commit), error))
     goto out;
 
   ret = TRUE;
index 1c7eeb36c6c61ef43da08a5897f0cf86aa88bcc4..22bb0e620158fb389e48e369c05d4a5849f6d360 100644 (file)
@@ -91,7 +91,7 @@ gboolean      ostree_repo_resolve_rev (OstreeRepo  *self,
                                        GError     **error);
 
 gboolean      ostree_repo_write_ref (OstreeRepo  *self,
-                                     gboolean     is_local,
+                                     const char  *remote,
                                      const char  *name,
                                      const char  *rev,
                                      GError     **error);